// 模块二（拓展模块）：负责拓展req 和 res 对象，为req 和 res 增加以下更方便 好用的api

var url = require('url');
var fs = require('fs');
var mime = require('mime');
var _ = require('underscore');

// 暴露函数 让外界通过函数 给模块传递
module.exports = function (req, res) {
    // 将 url 转换成对象
    var urlObj = url.parse(req.url.toLowerCase(), true)

    // 1. 为 req 增加一个 query 属性 该属性中保存的就是用户 get 请求提交过来的数据
    req.query = urlObj.query;

    // 2. 为 req 增加一个 pathname 属性
    req.pathname = urlObj.pathname;

    // 3. 将 req 的请求方法 转化为小写
    req.method = req.method.toLowerCase();

    // 3. 为 res 增加一个 render 函数 ---> 获取静态资源  
    // tplData 表示模板数据 可传入可不传
    res.render = function (filename, tplData) {
        fs.readFile(filename, function (err, data) {
            if (err) {
                res.writeHead(404, 'Not Found', { 'Content-Type': 'text/html;charset=utf-8' });
                res.end('404 Not Found');
                return;
            }
            // 如果有模板数据
            if (tplData) {
                // underscore 模板函数
                var fn = _.template(data.toString('utf-8'));
                data = fn(tplData);
            }
            res.setHeader('Content-Type', mime.getType(filename));
            res.end(data);
        })
    }
}